User experience of content rendering with time budgets

ABSTRACT

A budgeted time for displaying content at a client device is determined. The budgeted time is based on time-budget values. The content can be delivered and displayed in one or more phases. The time-budget values correspond to the one or more phases. Transmission of given content is requested. At least one component of the given content is received. The received at least one component of the given content is displayed within the budgeted time after requesting the transmission of the given content.

BACKGROUND

Unless otherwise indicated herein, the materials described in thissection are not prior art to the claims in this application and are notadmitted to be prior art by inclusion in this section.

Various technologies can be utilized to electronically exchangeinformation between users. For example, computers, telephones, andpersonal digital assistants (PDAs) can be used to exchange content overcommunication networks including the Internet. The content exchangedbetween such devices can include web pages that, in turn, can includetext, video data, audio data and/or other types of data. Typically,“best effort” techniques are used in communicating the content over theInternet; that is, no guarantees are provided that data is delivered orthat a quality of service is assured while communicating the content. Inbest effort delivery, an entity receiving content typically adapts tothe network's timing for delivering content by waiting for the content.

SUMMARY

In one embodiment, a method for displaying content in phases isprovided. A budgeted time for displaying content on a client device isdetermined. The budgeted time is based on time-budget values. Thecontent is delivered and displayed in one or more content-displayphases. The time-budget values correspond to the one or more phases.Transmission of given content to the client device is requested. One ormore components of the given content are received at the client device.The received one or more components of the given content are displayedusing the client device within the budgeted time after requesting thetransmission of the given content.

In another aspect of the disclosure of the application, a system fordisplaying content in phases is provided. The system includes one ormore processors. The one or more processors are at least configured to:(a) determine a budgeted time for displaying content based ontime-budget values, where the content is delivered and displayed in oneor more phases, and where the time-budget values correspond to the oneor more phases, (b) request transmission of given content, (c) receiveat least one component of the given content, and (d) display thereceived one or more components of the given content within the budgetedtime after requesting the transmission of the given content.

In yet another aspect of the disclosure of the application, an articleof manufacture including a tangible non-transitory computer-readablestorage medium having computer-readable instructions encoded thereon isprovided. The computer-readable instructions include: (a) instructionsfor determining a budgeted time for displaying content based ontime-budget values, where content is delivered and displayed in one ormore content-display phases, and where the time-budget values correspondto the one or more phases, (b) instructions for requesting transmissionof given content, (c) instructions for receiving one or more componentsof the given content, and (d) instructions for displaying the receivedone or more components of the given content within the budgeted timeafter requesting the transmission of the given content.

In still another aspect of the disclosure of the application, a systemfor displaying content in phases is provided. The system includes: (a)means for determining a budgeted time budget based on time-budgetvalues, where content is delivered and displayed in one or morecontent-display phases, and where the time-budget values correspond tothe one or more phases, and (b) means for requesting transmission ofgiven content, (c) means for receiving one or more components of thegiven content, and (d) means for displaying the received one or morecomponents of the given content within the budgeted time.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 depicts a network in accordance with an example embodiment.

FIG. 2A is a block diagram of a computing device in accordance with anexample embodiment.

FIG. 2B depicts a network with computing clusters in accordance with anexample embodiment.

FIG. 3 is a ladder diagram in accordance with an example embodiment.

FIG. 4 is another ladder diagram in accordance with an exampleembodiment.

FIG. 5 depicts a user interface for critical-path data, deviceinformation, connection information, and content-priority preferences inaccordance with an example embodiment.

FIG. 6A illustrates example content in accordance with an exampleembodiment.

FIG. 6B shows a scenario for displaying content in accordance with anexample embodiment.

FIG. 6C shows another scenario for displaying content in accordance withan example embodiment.

FIG. 7 is a flow chart of an example method in accordance with anexample embodiment.

DETAILED DESCRIPTION

The following detailed description describes various features andfunctions of the disclosed systems, devices, and methods with referenceto the accompanying figures. In the figures, similar symbols typicallyidentify similar components, unless context dictates otherwise. Theillustrative embodiments described in the detailed description, figures,and claims are not meant to be limiting. Other embodiments can beutilized, and other changes can be made, without departing from thespirit or scope of the subject matter presented herein. It will bereadily understood that the aspects of the present disclosure, asgenerally described herein, and illustrated in the figures, can bearranged, substituted, combined, separated, and designed in a widevariety of different configurations, all of which are explicitlycontemplated herein.

Overview

Techniques are described herein for communicating content based on atime budget for the content. For example, content such as a web page canhave text, images, video, audio, and/or other types of components. Thetime budget can be specified as one or more amounts of time related todelivering content. For example, the time budget can include one or moretime-budget entries. Each time-budget entry can provide one or moretime-budget values, or amount(s) of time for one or more phases fordelivering content from one or more servers, such as the critical-pathserver and/or a content server, to a requesting device and displayingcontent using the requesting device. For example, time-budget entriescan specify amounts of time for a requesting content phase, an initialserver response phase, a content downloading phase, and a display orrendering phase. Then, the requesting device can use the time-budgetentries to determine an amount of time for performing each phase ofcontent delivery. In this context, the sum or other combination of thetimes specified in the time-budget entries can constitute a budgetedtime for delivering and for displaying content.

As another example, the time budget can be specified using time-budgetvalues with one or more times by which content is to be delivered ordisplayed. For example, the time budget can specify that content is tobe delivered and displayed by a fixed time, such as 2 PM. Specifyingtime budgets in terms of a time for delivery or display can permitprioritization among many types of content; e.g., content to bedelivered by 2 PM can have a higher priority than content delivered by2:15 PM.

The content can be analyzed using content rules to determine one or morecomponents of the content. For example, content such as a web page canhave text, images, video, audio, and/or other types of components.

Most content, such as web pages, has one or more critical componentsthat are fundamental to the reviewing the content. That is, experienceof the content is incomplete without the critical components beingdelivered. Other non-critical components add value by enhancing the userexperience. As an analogy, components of an automobile that can beconsidered as critical could be wheels, a motor to drive the wheels, andcontrols, such as a steering wheel and brakes. Other components, such asupholstery, body contours, hub caps, and other accoutrements, may beimportant but could be considered as non-critical.

A critical-path ordering of content components can permit criticalcomponents to be delivered while the non-critical parts are in processof delivery to a requesting device, such as a client device. To thatend, critical-path data can indicate that some components can havehigher (or lower) value than other components, and thus should havecorrespondingly higher (or lower) priority in the critical-pathordering. Using critical-path ordering to deliver content takesadvantage of the observation that user perceptions are coarse-grainedand highly parallelized and that machine capabilities are fine-grainedand sequential.

User experience of content display can be improved by splitting thecontent into components and delivering higher-priority components beforelower-priority components. Even as the higher-priority components arebeing displayed, the lower-priority components can be transmitted overthe network and replaced in the displayed content. In some cases, thelower-priority content can seamlessly replace the higher-prioritycontent. The collection of critical-path ordering techniques describedherein can provide delivery of content within the desired time budgetmost of the time, even if the content is delivered using one or morebest-effort networks (e.g., the Internet).

A critical-path server can determine the critical-path ordering forrequested content by analyzing the requested content according to deviceinformation, the critical-path data, and/or the content rules. Thecritical-path ordering can be used to prioritize transmission of thecomponents of the requested content from the critical-path server to therequesting client device. The most important, i.e., highest-priority inthe critical-path ordering, components may be transmitted first, whileless important or lower-priority components may be transmitted after themost-important components.

As another example, the critical-path data can include information abouta time budget, including one or more time-budget entries as discussedabove. Then, the critical-path server and a client device can use thetime-budget entries to determine an amount of time for performing eachphase of content delivery. In this context, the sum or other combinationof the times specified in the time-budget entries can constitute abudgeted time for delivering and displaying content.

The times specified in the time-budget entries, can be specifieddirectly or implicitly by the critical-path server and/or the requestingdevice. The time-budget entries may be based on request intervals forrequesting information and/or by ratings of delivered content. Forexample, suppose a user of a requesting device requests content C attime T1 and then re-requests C at time T1+2.2 seconds. The requestinterval, or time between requests of content C, can be determined bysubtracting the times for requesting C or T1+2.2 seconds−T1=2.2 seconds.As another example, suppose content C1 was delivered with time(s)specified by time-budget entry/entries and then C1 was rated by a useras being “incomplete.” In response to the incomplete rating, times inone or more time-budget entries can be increased to increase thelikelihood that C1 will be completely displayed in the future.Continuing the rating example, suppose content C2 was delivered andrated by a user as being “complete.” In response to the complete rating,times in one or more time-budget entries can be maintained, or perhapsdecreased, to increase the likelihood that C2 will be displayed in thesame or less time in the future. By use of critical-path data includingtime-budget entries, the client device can specify and thereby controlthe amount of time required to display content requested from thecritical-path server.

Giving an entity, such as user or other computing device, implicit orexplicit control over content-delivery timing can enhance the userexperience. By using time budgets, the network supplying content to theentity adapts to the time budget to deliver content. In contrast, inbest effort delivery, the entity often adapts by waiting to thenetwork's timing for delivering content.

As another example, the critical-path ordering can take account ofprocessor speeds of the client device, such as the speeds of centralprocessing units (CPUs), graphics processing units (GPUs), and/or otherprocessors driving content display on client device. For example, afirst client device with one CPU operating with a clock speed of ngigahertz (GHz) and without a GPU is likely to take considerably longerto display content than a second client device with a quad-core CPU,each core operating at at least 2 n GHz, and with a GPU.

Correspondingly, the critical-path server can determine that morecontent can be displayed on the second client device in a fixed timebudget than on the first client device, and adjust the critical-pathordering accordingly. As one example, a priority of image content can bereduced.

As another example, for some component types, compressed or sub-sampledversions can be transmitted, perhaps to be replaced by later,uncompressed or fully-sampled versions of these components. For example,suppose the requested content included a 1024×1024 pixel image Imagethat had a high priority in the critical-path ordering and that theImage was ten times larger than any other component of the content. Ascontent delivery time would be dominated by the Image, the critical-pathserver could determine that the Image can be replaced with a first,smaller compressed and/or sub-sampled image corresponding to the Imageas a high-priority component. One or more higher-quality componentscorresponding to the Image could be later sent as lower-prioritycomponents to replace the earlier-transmitted components. Thus, thecritical path server can provide a progressively higher quality displayof the Image.

In some cases, the Image could be transmitted using interlacing orprogressive encoding, such as using the interlacing techniques availablefor images encoded using Graphics Interchange Format (GIF), PortableNetwork Graphics (PNG), Joint Photographic Experts Group (JPEG),Progressive Graphics File (PGF), and/or other file formats supportinginterlacing or progressive encoding. In these cases, the Image can bedisplayed using corresponding interlacing or progressive displaytechniques.

As content is delivered to the client device, the critical-path orderingcan account for other properties of the client device. For example,devices capable of displaying content can have a predetermined displayarea. If the predetermined display area is smaller than a display sizeof content, a critical-path ordering can prioritize visible componentsof content over components that are not visible in the predetermineddisplay area.

For example, suppose rendered content were to have a display size of1000×1000 pixels, but a requesting client device has a display with asize of 400×400 pixels. Then, the components of the rendered contentvisible in the 400×400 screen can have a higher priority in acritical-path ordering than the not-visible components. In this example,the critical-path server can delay sending of not-visible components,and correspondingly speed the display of actually visible content.Various other properties of the client device can be accounted for aswell.

The critical-path server can use connection information, or informationabout one or more networks connecting the client device and thecritical-path server, to determine the critical-path ordering. Theconnection information can include but is not limited to bandwidthinformation, round-trip delay information, upload speeds, downloadspeeds, and/or maximum number of connections. As one example, downloadspeeds and/or bandwidth information can be used to estimate a maximumamount of data that can be transmitted to the client device in apredetermined amount of time. As another example, suppose a clientdevice supports multiple simultaneous connections. Then, in some cases,a separate critical path ordering per connection can be determined andthe multiple critical path orderings can be used to transmit contentsimultaneously. Other connection information and uses of connectioninformation for determining critical-path orderings are possible aswell.

Critical-path data and/or content rules can include data aboutpreferences for content display and/or transmission. For example, anentity can set content-priority preferences in critical-path data toprioritize time-sensitive information over images, while another entitycan use content-priority preferences to prioritize image delivery overtextual data. Continuing the example of web page content, a web pagecould include text with time-sensitive information (e.g., stock quotes,sports scores, news feeds), text without time-sensitive information(e.g., articles, book excerpts, etc.), images, and audio information. Insome embodiments, the content-priority preferences are determined byanalyzing the content, perhaps by scanning for tags, meta-data, or otherinformation within the content to determine content-prioritypreferences. In other embodiments, the critical path server can usecontent rules to determine content-priority preferences.

Components can be adapted to fit the device information, thecritical-path data, the connection information, and/or the contentrules. In particular, the time budget can cause the critical-path serverto adapt one or more components of delivered content. The componentadaptation is driven by the budgeted time available and a best estimateof what can be done within the budgeted time. In some cases,functionality can be reduced in light of a time budget. For example,content providing e-mail access can revert to permitting only read andwrite access to e-mail while disabling search functionality due to timebudgets.

In some embodiments, time budgets and critical-path orderings can beutilized separately. For example, let there be a time budget of Tseconds for delivering content, which can be specified by an associatedclient device. The time budget for content can be satisfied by a serverusing any technique available to the server for delivering content tothe associated client device, as long as the requested content isdelivered within T seconds. Also, in some embodiments, critical-pathorderings can be used without time budgets. For example, a critical-pathserver can determine a critical-path ordering for content withoutconsideration of a budgeted time required for delivering the content.

In other embodiments, time budgets and critical-path orderings can beutilized together. If a time budget of T seconds has been specified,perhaps via one or more time-budget entries, the critical-path servercan utilize the time budget as an input for generating the critical-pathordering. For example, for relatively small values of T, thecritical-path ordering can involve utilizing sub-sampled, compressed, orotherwise smaller, yet at least partially equivalent, versions ofcontent to increase the number of components that can be deliveredwithin the time budget of T seconds. As another example, the contentserver can determine that the components in the critical-path orderingare to be delivered utilizing more bandwidth (e.g., the content isdelivered over faster and/or larger numbers of connections) when T isrelatively small than when T is relatively large, thus permitting thesame amount of content to be delivered with a relatively smaller timebudget.

Turning to the figures, FIG. 1 depicts a network 100 in accordance withan example embodiment. In FIG. 1, content server 108 and critical-pathserver 110 are configured to communicate, via a network 106, with clientdevices 104 a, 104 b, and 104 c. As shown in FIG. 1, client devices caninclude a personal computer 104 a, a telephone 104 b, and a smart-phone104 c. More generally, the client devices 104 a, 104 b, and 104 c (orany additional client devices) can be any sort of computing device, suchas an ordinary laptop computer, desktop computer, network terminal,wireless communication device (e.g., a cell phone or smart phone), andso on.

The network 106 can correspond to a local area network, a wide areanetwork, a corporate intranet, the public Internet, combinationsthereof, or any other type of network(s) configured to providecommunication between networked computing devices. Content server 108can provide content to client device 104 a-104 c and/or critical-pathserver 110. The content can include, but is not limited to, web pages,hypertext, scripts, binary data such as compiled software, images,audio, and/or video. The content can include compressed and/oruncompressed content. The content can be encrypted and/or unencrypted.Other types of content are possible as well.

Critical-path server 110 can be configured to generate and utilizecritical-path orderings to deliver requested content. Alternatively,content server 108 and critical-path server 110 can be implemented onone computing device, be co-located, and/or be accessible via a networkseparate from the network 106. Although FIG. 1 only shows three clientdevices, content server 108 and/or critical-path server 110 can servehundreds, thousands, or even more client devices.

Computing Device and Computing Network Architectures

FIG. 2A is a block diagram of a computing device 200 in accordance withan example embodiment. Computing device 200 can be configured to performone or more functions of client devices 104 a, 104 b, and 104 c, contentserver 108, and/or critical-path server 110. The computing device 200can include a user interface module 201, a network-communicationinterface module 202, one or more processors 203, and data storage 204,all of which can be linked together via a system bus, network, or otherconnection mechanism 205.

The user interface module 201 can be operable to send data to and/orreceive data from external user input/output devices. For example, theuser interface module 201 can be configured to send/receive data to/fromuser input devices such as a keyboard, a keypad, a touch screen, acomputer mouse, a track ball, a joystick, and/or other similar devices,now known or later developed. The user interface module 201 can also beconfigured to provide output to user display devices, such as one ormore cathode ray tubes (CRT), liquid crystal displays (LCD), lightemitting diodes (LEDs), displays using digital light processing (DLP)technology, printers, light bulbs, and/or other similar devices, nowknown or later developed. The user interface module 201 can also beconfigured to generate audible output(s), such as a speaker, speakerjack, audio output port, audio output device, earphones, and/or othersimilar devices, now known or later developed.

The network-communications interface module 202 can include one or morewireless interfaces 207 and/or wireline interfaces 208 that areconfigurable to communicate via a network, such as the network 106 shownin FIG. 1. The wireless interfaces 207 can include one or more wirelesstransceivers, such as a Bluetooth transceiver, a Wi-Fi transceiverperhaps operating in accordance with an IEEE 802.11 standard (e.g.,802.11a, 802.11b, 802.11g), a WiMAX transceiver perhaps operating inaccordance with an IEEE 802.16 standard, and/or other types of wirelesstransceivers configurable to communicate via a wireless network. Thewireline interfaces 208 can include one or more wireline transceivers,such as an Ethernet transceiver, a Universal Serial Bus (USB)transceiver, or similar transceiver configurable to communicate via awire, a twisted pair of wires, a coaxial cable, an optical link, afiber-optic link, or other physical connection to a wireline network.

In some embodiments, the network communications interface module 202 canbe configured to provide reliable, secured, compressed, and/orauthenticated communications. For each communication described herein,information for ensuring reliable communications (e.g., guaranteedmessage delivery) can be provided, perhaps as part of a message headerand/or footer (e.g., packet/message sequencing information,encapsulation header(s) and/or footer(s), size/time information, andtransmission verification information such as cyclic redundancy check(CRC) and/or parity check values). Communications can be compressed anddecompressed using one or more compression and/or decompressionalgorithms and/or protocols such as, but not limited to, one or morelossless data compression algorithms and/or one or more lossy datacompression algorithms. Communications can be made secure (e.g., beencoded or encrypted) and/or decrypted/decoded using one or morecryptographic protocols and/or algorithms, such as, but not limited to,DES, AES, RSA, Diffie-Hellman, and/or DSA. Other cryptographic protocolsand/or algorithms can be used as well or in addition to those listedherein to secure (and then decrypt/decode) communications.

The one or more processors 203 can include one or more general purposeprocessors and/or one or more special purpose processors (e.g., digitalsignal processors, application specific integrated circuits, etc.). Theone or more processors 203 can be configured to executecomputer-readable program instructions 206 that are contained in thedata storage 204 and/or other instructions as described herein.

The data storage 204 can include one or more computer-readable storagemedia that can be read or accessed by at least one of the processors203. The one or more computer-readable storage media can includevolatile and/or non-volatile storage components, such as optical,magnetic, organic or other memory or disc storage, which can beintegrated in whole or in part with at least one of the one or moreprocessors 203. In some embodiments, the data storage 204 can beimplemented using a single physical device (e.g., one optical, magnetic,organic or other memory or disc storage unit), while in otherembodiments, the data storage 204 can be implemented using two or morephysical devices.

Computer-readable storage media associated with data storage 204 and/orother computer-readable media described herein can also includenon-transitory computer-readable media such as computer-readable mediathat stores data for short periods of time like register memory,processor cache, and random access memory (RAM). Computer-readablestorage media associated with data storage 204 and/or othercomputer-readable media described herein can also include non-transitorycomputer readable media that stores program code and/or data for longerperiods of time, such as secondary or persistent long term storage, likeread only memory (ROM), optical or magnetic disks, compact-disc readonly memory (CD-ROM), for example. Computer-readable storage mediaassociated with data storage 204 and/or other computer-readable mediadescribed herein can also be any other volatile or non-volatile storagesystems. Computer-readable storage media associated with data storage204 and/or other computer-readable media described herein can beconsidered computer readable storage media for example, or a tangiblestorage device.

The data storage 204 can include computer-readable program instructions206 and perhaps additional data. In some embodiments, the data storage204 can additionally include storage required to perform at least partof the herein-described techniques, methods (e.g., method 700), and/orat least part of the functionality of the herein-described devices andnetworks.

FIG. 2B depicts a network 106 with computing clusters 209 a, 209 b, and209 c in accordance with an example embodiment. In FIG. 2B, functions ofcontent server 108 and/or critical-path server 110 can be distributedamong three computing clusters 209 a, 209 b, and 208 c. The computingcluster 209 a can include one or more computing devices 200 a, clusterstorage arrays 210 a, and cluster routers 211 a connected by localcluster network 212 a. Similarly, computing cluster 209 b can includeone or more computing devices 200 b, cluster storage arrays 210 b, andcluster routers 211 b connected by local cluster network 212 b.Likewise, computing cluster 209 c can include one or more computingdevices 200 c, cluster storage arrays 210 c, and cluster routers 211 cconnected by a local cluster network 212 c.

In some embodiments, each of computing clusters 209 a, 209 b, and 209 ccan have an equal number of computing devices, an equal number ofcluster storage arrays, and an equal number of cluster routers. In otherembodiments, however, some or all of computing clusters 209 a, 209 b,and 209 c can have different numbers of computing devices, differentnumbers of cluster storage arrays, and/or different numbers of clusterrouters. The number of computing devices, cluster storage arrays, andcluster routers in each computing cluster can depend on the computingtask or tasks assigned to each computing cluster.

In computing cluster 209 a, for example, computing devices 200 a can beconfigured to perform various computing tasks of content server 108. Inone embodiment, the various functionalities of content server 108 can bedistributed among one or more of the computing devices 200 a. Forexample, some of these computing devices can be configured to providepart or all of a first set of content while the remaining computingdevices can provide part or all of a second set of content. Still othercomputing devices of the computing cluster 209 a can be configured tocommunicate with critical-path server 110. Computing devices 200 b and200 c in computing clusters 209 b and 209 c can be configured the sameor similarly to the computing devices 200 a in computing cluster 209 a.

On the other hand, in some embodiments, computing devices 200 a, 200 b,and 200 c each can be configured to perform different functions. Forexample, computing devices 200 a and 200 b can be configured to performone or more functions of content server 108, and the computing devices200 c can be configured to perform one or more functions ofcritical-path server 110.

Cluster storage arrays 210 a, 210 b, and 210 c of computing clusters 209a, 209 b, and 209 c can be data storage arrays that include disk arraycontrollers configured to manage read and write access to groups of harddisk drives. The disk array controllers, alone or in conjunction withtheir respective computing devices, can also be configured to managebackup or redundant copies of the data stored in the cluster storagearrays to protect against disk drive or other cluster storage arrayfailures and/or network failures that prevent one or more computingdevices from accessing one or more cluster storage arrays.

Similar to the manner in which the functions of content server 108and/or critical-path server 110 can be distributed across computingdevices 200 a, 200 b, and 200 c of respective computing clusters 209 a,209 b, and 209 c, various active portions and/or backup/redundantportions of these components can be distributed across cluster storagearrays 210 a, 210 b, and 210 c. For example, some cluster storage arrayscan be configured to store data for content server 108, while othercluster storage arrays can store data for critical-path server 110.Additionally, some cluster storage arrays can be configured to storebackup versions of data stored in other cluster storage arrays.

The cluster routers 211 a, 211 b, and 211 c in the computing clusters209 a, 209 b, and 209 c can include networking equipment configured toprovide internal and external communications for the computing clusters.For example, the cluster routers 211 a in the computing cluster 209 acan include one or more internet switching and/or routing devicesconfigured to provide (i) local area network communications between thecomputing devices 200 a and the cluster storage arrays 201 a via thelocal cluster network 212 a, and/or (ii) wide area networkcommunications between the computing cluster 209 a and the computingclusters 209 b and 209 c via the wide area network connection 213 a tothe network 106. The cluster routers 211 b and 211 c can include networkequipment similar to the cluster routers 211 a, and the cluster routers211 b and 211 c can perform similar networking functions for thecomputing clusters 209 b and 209 b that the cluster routers 211 aperform for the computing cluster 209 a.

In some embodiments, computing tasks and stored data associated withcontent server 108 and/or critical-path server 110 can be distributedacross the computing devices 200 a, 200 b, and 200 c using a variety oftechniques. These techniques for distributing tasks and stored data canbe based at least in part on the processing requirements for functionsof content server 108 and/or critical-path server 110, the processingcapabilities of the computing devices 200 a, 200 b, and 200 c, thelatency of the local cluster networks 212 a, 212 b, and 212 c, the widearea network connections 213 a, 213 b, and 213 c, and/or other factorsthat can contribute to the cost, speed, fault-tolerance, resiliency,efficiency, and/or other design goals of the overall systemarchitecture.

Additionally, the configuration of the cluster routers 211 a, 211 b, and211 c can be based at least in part on the data communicationrequirements of the computing devices and cluster storage arrays, thedata communications capabilities of the network equipment in the clusterrouters 211 a, 211 b, and 211 c, the latency and throughput of the localcluster networks 212 a, 212 b, 212 c, the latency, throughput, and costof the wide area network connections 213 a, 213 b, and 213 c, and/orother factors that can contribute to the cost, speed, fault-tolerance,resiliency, efficiency and/or other design goals of the systemarchitecture.

Time Budgets for Content Delivery

FIG. 3 is a ladder diagram 300 in accordance with an example embodiment.Ladder diagram 300 depicts an example set of phases for content deliverybetween client device 104 a and critical-path (CP) server 110. In otherscenarios not shown in FIG. 3, other client devices other than 104 acould be used, while in still other scenarios, more, fewer, and/ordifferent phases for content delivery between a client device and acritical path server could be utilized.

During content request phase 302, client device 104 a can requestcontent from critical-path server 110. Content request phase 302 caninclude processing of content requests according to one or morecontent-delivery-related protocols, such as but not limited to HyperTextTransfer Protocol (HTTP), Structured Stream Transport (SST), the Speedy(SPDY) Protocol, the MUX protocol, or the SMUX protocol. FIG. 3 alsoindicates that a time budget of t1 can be allocated for content requestphase 302.

During content response phase 304, critical-path server 110 can respondto the content request sent during content request phase 302 with acontent response. As with the content request, content response phase340 can include processing of content requests in accord with one ormore content-delivery-related protocols, such as but not limited toHTTP, SST, SPDY, MUX, or SMUX. FIG. 3 indicates that a time budget of t2is allocated for content request phase 304. In some scenarios not shownin FIG. 3, the content response of content response phase 304 caninclude some or all of the content requested during content requestphase 302.

After responding to the content request, critical-path server 110 canbegin to download (i.e., send) the requested content to client device104 a during content download phase 306. FIG. 3 shows that contentdownload phase 306 can begin at content download phase start 306 a andcan end at content download phase end 306 b. FIG. 3 also indicates thata time budget of t3 can be allocated for content download phase 306.

After at least some content is downloaded to client device 104 a, thedownloaded content can be displayed during content display phase 308.FIG. 3 shows that content display phase 308 can begin at content displayphase start 308 a and can end at content display phase end 308 b. FIG. 3also indicates that a time budget of t4 can be allocated for contentdownload phase 308.

While some phases take place serially, some of the phases in the exampleset of phases for content delivery can take place in parallel. Forexample, FIG. 3 shows that content display phase 308 overlaps contentdownload phase 306 and so these two phases can occur in parallel. Duringthe parallel portion of content display phase 308 and content downloadphase 306, content can be simultaneously downloaded to client device 104a and displayed by client device 104 a.

A budgeted time can be determined based on the time budgets for thephases for content delivery. For example, the budgeted time can be thesum of the time budgets for all phases for content delivery. Using theexample shown in FIG. 3, the corresponding budgeted time can bet1+t2+t3+t4. In other scenarios, a single budgeted time value can beused for the entire content delivery (i.e., content delivery could havea single phase), some of the phase time budgets could be omitted fromthe calculation leading to the budgeted time, adjustments could be madefor parallel phases (e.g., subtract a portion or all of the timeallocated to a phase that occurs in parallel for other phases), time fordelays can be added or subtracted, and/or some or all of the phasebudgets can be scaled by one or more scaling factors. Many othertechniques for determining a budgeted time for content delivery based ontime-budget entries for content delivery phases are possible as well.

The budgeted time can be implicitly specified. For example, time budgetscan be implicitly specified using request intervals, or intervalsbetween making content requests. Suppose an entity makes a first contentrequest at time ReqTime1 and later makes a second content request attime ReqTime2. The request interval RI for these two content requestscan be determined by the formula R1=ReqTime2−ReqTime1.

A time budget can be specified based on a minimum, an average, and/or amaximum request interval time. For example, a time budget can bespecified in terms of a minimum or maximum request interval time, suchas a request interval of no less than 1 second or a request interval ofno more than 3500 ms. As another example, a time budget can be specifiedin terms of an average request interval time, perhaps including minimumand/or maximum request interval times. Such example time budgets couldinclude an example time budget specifying a minimum, average, or maximumrequest interval time of 3 seconds and an example time budget specifyingminimum, average, and maximum request interval times with an averagerequest interval time of 3 seconds±1 second.

In some cases, the implicitly-specified time budget can be used tofurther specify time budget entries for content delivery phases. Supposean implicit time budget of ITB=2000 milliseconds (ms)=2 seconds has beenspecified. Table 1 above specifies, as an example, a percentage of thetime budget used by the content request phase PER_CRP of 24%. Then, theimplicitly-specified time budget value for the content request phaseITB_CRP can be determined by the formula ITB_CRP=PER_CPR*ITB=24%*2000ms=480 ms.

Further, user ratings of content can implicitly specify a budgeted time.For example, suppose content was requested, but not completelydisplayed, within a specified budgeted time. A user rating of thedisplayed content as “unacceptable” or “not completely displayed” canindicate implicitly that the specified budgeted time should beincreased. In contrast, if few or no “not completely displayed” ratingshave been received for a predetermined number of content requests from aparticular user or client device, then the implication could be that thebudgeted time is too high, and thus could be decreased. Other techniquesfor implicitly specifying budgeted times and time budgets are possibleas well.

The time budget can be explicitly specified utilizing one or moretime-budget entries. User interfaces for time budgets and time-budgetentries are discussed below in more detail in the context of FIG. 5.Each time-budget entry can specify one or more time-budget values, oramounts of time for a corresponding phase of content delivery. Table 1below shows an example set of time-budget entries.

TABLE 1 Time Percentage of Phase Budget Value Time Budget ContentRequest Phase 240 ms 24% Content Response Phase 160 ms 16% ContentDownload Phase 200 ms 20% Content Display Phase 400 ms 40%

Taking the sum of the example set of time-budget entries in Table 1, abudgeted time of 240+160+200+400=1000 ms for content delivery can bespecified. In another example, a range of values can be specified foreach content delivery phase (e.g., the content request phase rangesbetween 50 and 250 ms). In yet another example, a single time-budgetvalue could specify a maximum duration for content delivery. Othercontent delivery phases and corresponding time-budget entries could bespecified as well; e.g., an “above-the-fold” or visible display completephase and corresponding time-budget value, an “interactivity allowed”phase and corresponding “time to interactivity” time-budget value. Otherexplicit specifications of time budgets, content-delivery phases,time-budget entries, budgeted times, and/or time-budget values arepossible as well.

In some cases, one or more time-budget values can be provided to acomponent responsible for performing one or more phases of contentdelivery as a component-time budget. For example, a browser or otherrendering component could receive time-budget values for displayingcontent. Using the time-budget values, the browser could determineappropriate priorities related to the content display phase, such asdisplay time, display quality, displayable components, etc.

In other cases, the component could exceed a time budget by a smallamount or percentage of time, such as when the small amount/percentageof time is used to provide a better quality of service. For example,suppose the rendering component had a time budget of 1000 ms anddetermined that content can be rendered at a highest quality within 1050ms (5% of the original time budget). For this example, the smalladditional amount of time could be used to provide a higher qualityrendering.

Similarly, a time budget specifying delivery at or before a given timecan include a small amount or percentage of time to exceed the timebudget. As an example, suppose content is budgeted to be delivered by12:00:00 PM with a 5 second amount of permitted delay. Then, if thecontent were delivered at 12:00:03 PM, the content can be considered tobe delivered within the time budget including the permitted delay. Manyother examples of providing time-budget values to components andcomponent use of time budget values are possible as well.

The decision to use additional amounts of time and/or the correspondingamounts of time can be specified in critical-path data, such asdiscussed below in the context of FIG. 5. For example, the critical-pathdata can include a parameter to decide whether to use or not to useadditional amounts of time without specifying the amount. As anotherexample, the critical-path data can specify amounts of additional timesbut leave the decision to use such additional amounts of time with thecritical-path server. Many other examples of providing time-budgetvalues to components and component use of time-budget values arepossible as well.

Techniques for explicit and implicit specification of time budgets canbe combined. For example, a time budget can be determined using theabove-mentioned implicit-budgeting techniques and then tuned usingexplicit specification of time budgets for one or more phases of contentdelivery. As another example, explicitly-specified time budgets can beused to determine percentages of time budgets explicitly, such as viadata entry, or implicitly. For example, the time-budget entries for allphases can be specified to get a time budget TB_(n), then the implicitpercentage IP_(i) for phase P_(i) (0<=i<=n) can be determined asIP_(i)=P_(i)/TB_(n)*100%. Then, the percentages of time budgets can beused, as discussed above, to specify time-budget entries based animplicit time budget. Other combinations of explicit and implicit timebudgets are possible as well.

Critical-Path Ordering of Content

FIG. 4 is a ladder diagram 400 in accordance with an example embodiment.A transmission of critical data 402 is communicated from a client device104 to critical-path server 110 via critical path (CP) transmission 410.Critical-path data is described below in more detail in the context ofFIG. 5.

Client device 104 can communicate content request 420 to request contentdelivery via critical-path server 110. Upon reception of content request420, critical-path server 110 can request content 422 from contentserver 108 as specified in content request 420. Content server 108 candeliver content 422 to critical-path server 110.

At block 424, upon reception of content 422, critical-path server 110can determine a critical-path ordering 424 for content components 426a-426 n of content 422. Using the critical-path ordering, critical-pathserver 108 can communicate content components 426 a-426 n to clientdevice 104. As shown in FIG. 4, content components 426 a-426 n aredelivered within a time budget specified in critical-path data 402 andcommunicated via critical-path data transmission 410.

After request interval of time 428, client device 104 sends anothercontent request 430 to critical-path server 110. Upon reception ofcontent request 430, critical-path server 110 can request content 432from content server 108 as specified in content request 430. Contentserver 108 can deliver content 432 to critical-path server 110.

At block 434, client device 104 can implicitly update a time budgetspecified in critical-path data 402 based on request interval 428.Implicit specification of time budgets using request intervals isdiscussed above in more detail in the context of at least FIG. 3. Uponupdating critical-path data 402, client device 104 can communicateupdated critical-path data 402 to critical-path server 110 usingcritical-path data communication 436.

At block 438, upon reception of content 432 and updated critical-pathdata via critical-path data communication 436, critical-path server 110can determine a critical path 438 for content components 440 a-440 m ofcontent 432. Using the critical-path ordering, critical-path server 108can communicate content components 440 a-440 m to client device 104. Asshown in FIG. 4, content components 440 a-440 m are delivered within atime budget specified in critical-path data 402 and communicated viacritical-path data transmissions 410 and 436.

FIG. 5 depicts a user interface 500 for critical-path data, deviceinformation, connection information, and content-priority preferences,in accordance with an example embodiment. In some embodiments, part orall of user interface 500 can be generated, operated, and/or displayedon a client device, such as client device 104 a, 104 b, or 104 c. Inother embodiments, part or all of user interface 500 can be generated,operated, and/or displayed on a server, such as content server 108and/or critical path server 110. In still other embodiments, userinterface 500 is generated, operated, and/or displayed by a combinationof both a client device and a server.

User interface 500 can display and/or change critical-path data, deviceinformation, connection information, and/or content-prioritypreferences. User interface 500 includes time budget interface 510,content ordering preferences interface 530, device and networkcharacteristics interface 540, priority keywords interface 560, andcontrol buttons 570 and 574.

Time budget interface 510 can display and/or change a budgeted time 512and/or time budget entries for various phases of content display. Forexample, FIG. 5 shows time-budget entry for content request phase 514 of1.1 sec, time-budget entry for content response phase 516 of 1 sec,time-budget entry for content download phase 518 of 2 sec, andtime-budget entry for content display phase 520 of 1.9 sec, for budgetedtime 512 as a total of the time-budget entries with a value of 6 sec.Other examples for budgeted times are possible as well.

Time budget interface 510 can be used to display and/or change permittedbudget overrun 522. As shown in FIG. 5, permitted budget overrun 522 is5%, which can be applied to each phase of content delivery and/or to thetime-budget total. As examples, using some of the figures shown in FIG.5, a content request phase can be permitted to have an overrun of 55milliseconds (ms) (1.1 sec=1100 ms*5%=55 ms) for a total of 1155 ms, andthe time-budget total can be permitted to have an overrun of 300 ms, fora total of 6300 ms.

Delivery time 524 can be used to specify a time budget in terms of acontent delivery time. Delivery time 524 can be entered as an absolutetime, e.g., 12:00:00 PM, or as a relative time, e.g., within 20 seconds.Permitted budget overrun 522 can be utilized when delivery time 524 isspecified. For example, if delivery time 524 is specified as 2:00:00 PMand the current time is 1:58:00 PM, the total budgeted time for deliverywould then be 2 minutes (120 seconds). The permitted budget overrun, canbe applied to the total time for delivery. Continuing this example,using a 5% permitted budget overrun shown in FIG. 5, the permittedbudget overrun is 120 seconds of total budgeted time*5%=6 seconds ofpermitted budget overrun.

Content ordering preferences interface 530 can include a priorityinterface 532 configured to display and/or change content-prioritypreferences for various types of content. As shown in FIG. 5, thepriorities of content types go from text (highest priority) to other(lowest priority). In some embodiments, priority interface 532 permitschanging of relative priorities using a drag-and-drop interface; forexample, to move an audio content type to the highest priority, a box ofpriority interface 532 marked “audio” could be selected using a inputinterface (e.g., a mouse) and dragged on top of a box of priorityinterface 532 with the highest priority content type of “Text”. Afterthis example drag-and-drop operation, the content-type priorities canbe: Audio, Text, Images, Video, and Other. Additional content orderingpreferences interfaces and content types are possible as well.

Content ordering preferences interface 530 can include types of priorityselections as well. As shown in FIG. 5, prioritize time sensitive datainterface 534 can display and/or select that time-sensitive data isprioritized or not prioritized. Other priority selections are possibleas well.

Device and network characteristics interface 540 can display and/orchange device information and/or connection information for a deviceconfigured for displaying content (e.g., client devices 104 a, 104 b, or104 c). FIG. 5 shows device and network characteristics interface 540displaying number of CPUs 542, number of GPUs 546, number of displays548, maximum number of connections 552, total bandwidth 554, andround-trip time 556.

Number of CPUs 542 and Number of GPUs 546, respectively, can display anumber of CPUs and a number of GPUs resident on the device configuredfor displaying content. In the example in FIG. 5, the device configuredfor displaying content has 2 CPUs, but does not have a GPU. FIG. 5 alsoshows each of the two CPUs with clock speeds 544 a and 544 b equal to2.1 GHz.

Number of displays 548 can display a number of displays. Each display inthe number of display can be used by the device to actually displaycontent. In the example shown in FIG. 5, the device configured fordisplaying content has one display: Display 1. Display information 550for Display 1 indicates that Display 1 can display 1280×1024 pixelsusing 32 bit color, has a refresh rate of 60 Hz, and includes 1024megabytes (MB) of RAM. Additional information, perhaps for more or fewerdisplays, can be shown as display information as well.

Number of connections 552 can indicate a maximum number of networkconnections available to the device configured for displaying content.Total bandwidth 554 can indicate a maximum or total amount of bandwidthavailable to the device configured for displaying content. Round-triptime 556 can indicate a round-trip time to a content server (CS); thatis, the time for data to go from the device configured for displayingcontent to the content server and back. In the example shown in FIG. 5,the device configured for displaying content has 8 connections availablewith a total bandwidth of 10 megabits per second (Mbit/s), and around-trip time to the content server of 10 milliseconds. Additionalnetwork information can be changed and/or displayed as part of deviceand networks characteristics interface 540 as well.

Priority keywords interface 560 can be configured to display and/orchange keywords 562. For example, when delivered content includes one ormore of keywords 562, such as “Mountain Views”, “Large Numbers”, and/or“Curling” as shown in FIG. 5, then the component(s) containing thesekeywords can be prioritized over component(s) of content not containingany specified keywords. Other keywords and content-priority preferencescan be specified.

One or more services, such as a critical-path server, can adapt deliveryof content based on data displayed and/or changed via the time budgetinterface 510, content ordering preferences interface 530, device andnetwork characteristics interface 540, and/or priority keywordsinterface 560, and/or other information described herein such as, butnot limited to, content rules, content-priority preferences, connectioninformation, and/or device information. In some embodiments, theservice(s) can adapt by generating the critical-path ordering takinginto account some or all of this information. Other adaptations arepossible as well.

Save control button 570, which selected, instructs a device operatinguser interface 500 to save data entered using user interface 500. Closecontrol button 572, when selected, instructs a device operating userinterface 500 to close user interface 500. In some embodiments, any datachanged using user interface 500 before selecting close control button572 is not saved; while in other embodiments, upon selection of closecontrol button 572, a dialog (not shown in FIG. 5) is displayedprompting a user to either save data changed using user interface 500 orto close user interface 500 without saving any data changed via userinterface 500. In still other embodiments, more or fewer control buttonscan be provided by user interface 500.

Example Communications

FIG. 6A illustrates example content 600 in accordance with an exampleembodiment. Example content 600 includes text 602 a, 602 b, and 602 c,image 604, and advertisement (ad) 606. FIG. 6A shows that content 600has content display height 608 of h and a content display width 610 ofw.

Content 600 can be available from one or more content sources, such ascontent server 108. For example, ad 606 can be delivered from adifferent content source than text 602 a-602 c and/or image 604. Upondelivery, ad 606 can be aggregated with text 602 a-602 c and image 604to form a display of content 600.

Based on an analysis of content 600 applying one or more content rules,critical-path server 110 can determine that content 600 has fivecomponents: text components corresponding to text 602 a, 602 b, 602 cand ad 606, an image component corresponding to image 604. Critical-pathserver 110 can apply the one or more content rules on text components602 a, 602 b, and 602 c to determine that text component 602 a includestime-sensitive data, text components 602 b and 602 c includenon-time-sensitive data (text for links to additional sports and fashioninformation, respectively), and that ad 606 is an ad component. In somesituations not shown in FIGS. 6A-6C, critical-path server 110 can treatad 606 as a text component of content 600.

Many other examples of content available from one or more contentsources are possible as well. These other examples of content may havemore, fewer, or the same number of components, components may have sameand/or different types, and/or may have different or the same contentdisplay heights and/or widths as content 600.

FIG. 6B shows a scenario 610 for displaying content 600 in accordancewith an example embodiment. In particular, scenario 610 begins after acontent request has been made for content 600, and part of content 600has been delivered to a client device (e.g., client device 104 a, 104 b,or 104 c) for display. As such, scenario 610 can occur during contentdownload phase 306 and content display phase 308 for displaying content600.

In scenario 610, the critical-path data can include an indication thattext components should have a higher priority than image components orad components and an indication that time-sensitive text componentsshould have a higher priority than non-time-sensitive text components. Acritical-path ordering for scenario 610 can involve critical-path server110 applying the indications in the example critical-path data to thefive components of display 600. Then, critical-path server 110 candetermine a critical-path ordering of the five components of content 600with text 602 a having a highest priority, text 602 b and 602 c having anext-highest priority, and image 604 and ad 606 having lower prioritiesthan text 602 b and 602 c.

FIG. 6B shows display 620 a with three text components 622 a-622 c andimage component 624 a for content 600. Text components 622 a-622 cinclude the time-sensitive text component 622 a corresponding to text602 a of content 600, and the two non-time-sensitive text components 622b and 622 respectively corresponding to text 602 b and 602 c of content600. Image component 624 a can be a coarse version of image 604 ofcontent 600. A coarse version of an image component can have some, butnot all features of image 604. As shown in FIG. 6B, image component 624a only includes a background color of image 604.

Display 620 a does not include a display corresponding to ad 606. Thatis, display 620 a shows a partial display of the components of content600. As discussed above, this partial display 620 a of content 600 is inaccordance with any critical-path data and corresponding critical-pathordering of content 600 for scenario 610.

FIG. 6B shows display 620 b at a later point during the content downloadphase 306 and content display phase 308. In particular, display 620 bshows three text components 622 a, 622 b, and 622 c, and a coarseversion of image 604 as image component 624 b. While both imagecomponents 624 a and 624 b are coarse versions of image 604, imagecomponent 624 b is shown with more of the information content of image604. For example, image component 624 b can use interlaced orprogressive display techniques to communicate and display of image 604.As discussed above, display 620 b is in accordance with thecritical-path data 502 and corresponding critical-path ordering 500 ofcontent 600 for scenario 610.

FIG. 6B shows display 620 c after content download and content displayphases for delivering content 600 have completed. Display 620 c showscomplete versions of the five components of content 600 as textcomponents 622 a-622 c, image component 624 c, and ad 626. Inparticular, image component 624 c is a complete (i.e., not coarse)version of image 604.

FIG. 6C shows another scenario 630 for displaying content 600 inaccordance with an example embodiment. In scenario 630, a budgeted timeBT has been specified. Scenario 630 uses a device with a display height648 of DH and a display width 650 of DW for displaying content 600. FIG.6C shows that DH is equal to h (the content display height 608 forcontent 600), but DW is less than content display width 610 of w (thecontent display width 610 for content 600).

In scenario 630, device information 504 can include display height DHand display width DW to indicate a size of displaying content 600. Alsofor scenario 630, critical-path data 506 can include one or moretime-budget entries specifying budgeted time BT. A critical-pathordering for scenario 630 can involve critical-path server 110 applyingdevice information 504 and critical-path data 506 to the five componentsof display 600.

Critical-path server 110 can determine a critical-path ordering of thefive components of content 600 with image 604 and ad 606 as having ahigher priority as being visible components having a highest priorityand with text components 642 a-642 c having correspondingly lowerpriorities. In scenario 630, ad 606 can have a smaller size than image640. Then, determining a critical-path ordering in scenario 630 caninvolve using size and connection information to estimate that ad 606 islikely to take less time to display than image 604. In this example, thecritical-path ordering can prioritize ad 606 over image 604.

As with scenario 610, scenario 630 begins after a content request hasbeen made for content 600, and part of content 600 has been delivered toa client device (e.g., client device 104 a, 104 b, or 104 c) fordisplay. As such, scenario 630 can occur during content download phase306 and content display phase 308 for displaying content 600.

FIG. 6C shows display 640 a with ad 646 is bold text to indicate that ad646 has been displayed. In contrast, three text components 642 a-642 care shown in FIG. 6C in non-bolded text to indicate they are notdisplayed (and thus not visible) in display 640 a.

FIG. 6C also shows image component 644 a for content 600 as a coarseversion of image 604. Critical-path server 110 can, in accordance with acritical-path ordering, defer communication of non-displayable textcomponents 642 a-642 c until all visible components including imagecomponent 644 a are communicated. That is, text components 642 a-642 cmay not be communicated until a complete version of image component 644a is communicated and/or displayed.

FIG. 6C shows display 640 b with ad 646 displayed and text components642 a-642 c not displayed. Image component 644 b is a further-refinedbut still coarse version of image 604. In scenario 630, the specifiedtime-budget TB expired after rendering display 640; that is, anincomplete version of content 600 was communicated and displayed by aclient device rendering displays 640 a and 640 b. Upon reviewing theincomplete version of content 600, display 640 b can be rated as “notcompletely displayed”, perhaps to implicitly increase budgeted time BT.

Example Operation

FIG. 7 is a flow chart of an example method 700 in accordance with anexample embodiment. At block 702, a budgeted time is determined fordisplaying content on a client device, such as one or more of clientdevices 104 a-104 c. The budgeted time can be based on time-budgetentries. The content can be delivered and displayed in one or morephases. The time-budget values can correspond to the one or more phases.A time budget can include the time-budget entries.

In some cases, the budgeted time can be explicitly determined. In othercases, the budgeted time can be implicitly determined. In some of theseother cases, implicitly determining the budgeted time includesdetermining a request interval between at least two content requests anddetermining the budgeted time based on the request interval.

In still other cases, the budgeted time can be both explicitly andimplicitly determined. Time budgets, budgeted times, and time-budgetentries are discussed above in the context of at least FIGS. 3, 4, 5,6B, and 6C.

At block 704, transmission of given content to the client device can berequested. Requesting transmission of content is discussed above in thecontext of FIGS. 1-6C.

At block 706, at least one component of the given content can bereceived at the client device. Receiving components of content aredescribed above in the context of at least FIGS. 3, 4, 5, 6A, 6B, and6C.

At block 708, the received at least one component of the given contentcan be displayed using the client device. The received at least onecomponent can be displayed within the budgeted time after requesting thetransmission of the given content. Receiving and displaying contentwithin a budgeted time are discussed above in the context of at leastFIGS. 3, 4, 5, 6B, and 6C.

In some cases, displaying the received at least one component caninclude adapting a service, such as but not limited to a content-requestservice, a content-response service, a content-download service, and/orcontent-display service. Examples of these services could includenetwork-communication interface module(s) on client device(s),critical-path server(s), and/or content server(s), a browser or othercontent rendering software and/or hardware, and/or other types ofservices.

In other cases, device information can be determined. In these othercases, receiving at least one component of the given content at theclient device can include receiving at least one component of the givencontent based on the device information. In some of these other cases,receiving at least one component of the given content based on thedevice information can include: receiving a first component of the atleast one component of the given content based on the device informationprior to a second component of the at least one component of the givencontent based on the device information, where the first component canbe displayed in a display specified in the display information, andwhere the second component cannot be displayed in the display. Deviceinformation is discussed above in more detail in at least the context ofFIGS. 5-6C.

In still other cases, connection information can be determined. In thesestill other cases, receiving at least one component of the given contentat the client device can include receiving at least one component of thegiven content based on the connection information. In some of thesestill other cases, receiving the at least one component of the givencontent based on the connection information can include receiving asub-sampled version of a first component of the at least one componentof the given content based on the connection information. In other ofthese still other cases, receiving at least one component of the givencontent based on the connection information can include receiving afirst component of the at least one component of the given content basedon the connection information prior to a second component of at leastone component of the given content based on the connection information,where the first component can be received within the budgeted time basedon a total bandwidth of the connection information, and where the secondcomponent cannot be received within the budgeted time based on the totalbandwidth. Connection information is discussed above in more detail inat least the context of FIGS. 5-6C.

CONCLUSION

With respect to any or all of the ladder diagrams, scenarios, and flowcharts in the figures and as discussed herein, each block and/orcommunication may represent a processing of information and/or atransmission of information in accordance with example embodiments.Alternative embodiments are included within the scope of these exampleembodiments. In these alternative embodiments, for example, functionsdescribed as blocks, transmissions, communications, requests, responses,and/or messages may be executed out of order from that shown ordiscussed, including substantially concurrent or in reverse order,depending on the functionality involved. Further, more or fewer blocksand/or functions may be used with any of the ladder diagrams, scenarios,and flow charts discussed herein, and these ladder diagrams, scenarios,and flow charts may be combined with one another, in part or in whole.

A block that represents a processing of information may correspond tocircuitry that can be configured to perform the specific logicalfunctions of a herein-described method or technique. Alternatively oradditionally, a block that represents a processing of information maycorrespond to a module, a segment, or a portion of program code(including related data). The program code may include one or moreinstructions executable by a processor for implementing specific logicalfunctions or actions in the method or technique. The program code and/orrelated data may be stored on any type of computer readable medium suchas a storage device including a disk or hard drive or other storagemedium.

The computer readable medium may also include non-transitory computerreadable media such as computer-readable media that stores data forshort periods of time like register memory, processor cache, and randomaccess memory (RAM). The computer readable media may also includenon-transitory computer readable media that stores program code and/ordata for longer periods of time, such as secondary or persistent longterm storage, like read only memory (ROM), optical or magnetic disks,compact-disc read only memory (CD-ROM), for example. The computerreadable media may also be any other volatile or non-volatile storagesystems. A computer readable medium may be considered a computerreadable storage medium, for example, or a tangible storage device.

Moreover, a block that represents one or more information transmissionsmay correspond to information transmissions between software and/orhardware modules in the same physical device. However, other informationtransmissions may be between software modules and/or hardware modules indifferent physical devices.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopeand spirit being indicated by the following claims.

What is claimed is:
 1. A method for displaying content in phases, themethod comprising: determining a time budget for displaying content on aclient device based on time-budget values, wherein the content isdelivered and displayed in one or more phases, wherein the time-budgetvalues correspond to the one or more phases, wherein the one or morephases comprise a content request phase, a content response phase, acontent download phase, and a content display phase, and wherein thetime budget begins with the content request phase; determining deviceinformation; requesting transmission of given content to the clientdevice during the content request phase; receiving at least onecomponent of the given content at the client device based on the deviceinformation prior to a second component of the at least one component ofthe given content based on the device information, wherein the firstcomponent can be displayed in a display specified in the displayinformation, and wherein the second component cannot be displayed in thedisplay; and displaying the received at least one component of the givencontent using the client device within the time budget.
 2. The method ofclaim 1, wherein determining the time budget for displaying content onthe client device comprises explicitly determining the time budget fordisplaying content on the client device.
 3. The method of claim 1,wherein determining the time budget for displaying content on the clientdevice comprises implicitly determining the time budget for displayingcontent on the client device.
 4. The method of claim 3, whereinimplicitly determining the time budget for displaying content on theclient device comprises: determining a request interval between at leasttwo content requests; and determining the time budget based on therequest interval.
 5. The method of claim 1, wherein displaying thereceived at least one component of the given content comprises: adaptinga service to meet the time budget; and displaying the received at leastone component using the adapted service.
 6. The method of claim 1,further comprising: determining connection information; and whereinreceiving the at least one component of the given content at the clientdevice comprises receiving at least one component of the given contentbased on the connection information.
 7. The method of claim 6, whereinreceiving the at least one component of the given content based on theconnection information comprises receiving a sub-sampled version of afirst component of the at least one component of the given content basedon the connection information.
 8. The method of claim 6, whereinreceiving the at least one component of the given content based on theconnection information comprises receiving a first component of the atleast one component of the given content based on the connectioninformation prior to a second component of the at least one component ofthe given content based on the connection information, wherein the firstcomponent can be received within the time budget based on a totalbandwidth of the connection information, and wherein the secondcomponent cannot be received within the time budget based on the totalbandwidth.
 9. A system for displaying content in phases, the systemcomprising: one or more central processing units (CPUs) configured to:determine a time budget for displaying content based on time-budgetvalues, wherein the content is delivered and displayed in one or morephases, wherein the time-budget values correspond to the one or morephases, wherein the one or more phases comprise a content request phase,a content response phase, a content download phase, and a contentdisplay phase, and wherein the time budget begins with the contentrequest phase; determine device information; request transmission ofgiven content during the content request phase; receive at least onecomponent of the given content based on the device information prior toa second component of the at least one component of the given contentbased on the device information, wherein the first component can bedisplayed in a display specified in the display information, and whereinthe second component cannot be displayed in the display; and display thereceived at least one component of the given content within the timebudget.
 10. The system of claim 9, wherein the one or more CPUsconfigured to determine the time budget for displaying content arefurther configured to explicitly determine the time budget fordisplaying content.
 11. The system of claim 9, wherein the one or moreCPUs configured to determine the time budget for displaying content arefurther configured to implicitly determine the time budget fordisplaying content.
 12. The system of claim 11, wherein the one or moreCPUs configured to implicitly determine the time budget for displayingcontent on the client device are further configured to: determine arequest interval between at least two content requests; and determinethe time budget based on the request interval.
 13. The system of claim9, wherein the one or more CPUs configured to display the received atleast one component of the given content are further configured to:adapt a service to meet the time budget; and display the received atleast one component using the adapted service.
 14. The system of claim9, wherein the one or more CPUs are further configured to: determineconnection information; and wherein the one or more processorsconfigured to receive the at least one component of the given contentare further configured to receive at least one component of the givencontent based on the connection information.
 15. The system of claim 14,wherein the one or more CPUs configured to receive the at least onecomponent of the given content based on the connection information arefurther configured to receive a sub-sampled version of a first componentof the at least one component of the given content based on theconnection information.
 16. The system of claim 14, wherein the one ormore CPUs configured to receive the at least one component of the givencontent based on the connection information are further configured toreceive a first component of the at least one component of the givencontent based on the connection information prior to a second componentof the at least one component of the given content based on theconnection information, wherein the first component can be receivedwithin the time budget based on a total bandwidth of the connectioninformation, and wherein the second component cannot be received withinthe time budget based on the total bandwidth.
 17. An article ofmanufacture including a tangible non-transitory computer-readablestorage medium having computer-readable instructions encoded thereon,the instructions comprising: instructions for determining a time budgetfor displaying content based on time-budget values, wherein the contentis delivered and displayed in one or more content-display phases,wherein the time-budget values correspond to the one or more phases,wherein the one or more phases comprise a content request phase, acontent response phase, a content download phase, and a content displayphase, and wherein the time budget begins with the content requestphase; instructions for determining device information; instructions forrequesting transmission of given content during the content requestphase; instructions for receiving at least one component of the givencontent based on the device information prior to a second component ofthe at least one component of the given content based on the deviceinformation, wherein the first component can be displayed in a displayspecified in the display information, and wherein the second componentcannot be displayed in the display; and instructions for displaying thereceived at least one component of the given content within the timebudget.
 18. The article of manufacture of claim 17, wherein theinstructions for determining the time budget for displaying contentcomprise instructions for explicitly determining the time budget fordisplaying content.
 19. The article of manufacture of claim 17, whereinthe instructions for determining the time budget for displaying contentcomprise instructions for implicitly determining the time budget fordisplaying content.
 20. The article of manufacture of claim 19, whereinthe instructions for implicitly determining the time budget fordisplaying content comprise: instructions for determining a requestinterval between at least two content requests; and instructions fordetermining the time budget based on the request interval.
 21. Thearticle of manufacture of claim 17, wherein the instructions fordisplaying the received at least one component of the given contentcomprise: instructions for adapting a service to meet the time budget;and instructions for displaying the received at least one componentusing the adapted service.
 22. The article of manufacture of claim 17,further comprising: instructions for determining connection information;and wherein the instructions for receiving the at least one component ofthe given content comprise instructions for receiving at least onecomponent of the given content based on the connection information. 23.The article of manufacture of claim 22, wherein the instructions forreceiving the at least one component of the given content based on theconnection information comprise instructions for receiving a sub-sampledversion of a first component of the at least one component of the givencontent based on the connection information.
 24. The article ofmanufacture of claim 22, wherein the instructions for receiving the atleast one component of the given content based on the connectioninformation comprise instructions for receiving a first component of theat least one component of the given content based on the connectioninformation prior to a second component of the at least one component ofthe given content based on the connection information, wherein the firstcomponent can be received within the time budget based on a totalbandwidth of the connection information, and wherein the secondcomponent cannot be received within the time budget based on the totalbandwidth.
 25. A system for displaying content in phases, the systemcomprising: means for determining a time budget for displaying contentbased on time-budget values, wherein the content is delivered anddisplayed in one or more phases, and wherein the time-budget valuescorrespond to the one or more phases, wherein the one or more phasescomprise a content request phase, a content response phase, a contentdownload phase, and a content display phase, and wherein the time budgetbegins with the content request phase; means for determining deviceinformation; means for requesting transmission of given content duringthe content request phase; means for receiving at least one component ofthe given content based on the device information prior to a secondcomponent of the at least one component of the given content based onthe device information, wherein the first component can be displayed ina display specified in the display information, and wherein the secondcomponent cannot be displayed in the display; and means for displayingthe received at least one component of the given content within the timebudget.